<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Dataflow programming</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Dataflow_programming"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Dataflow_programming rootpage-Dataflow_programming skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Dataflow programming</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p>In <a href="Computer_programming" title="Computer programming">computer programming</a>, <b>dataflow programming</b> is a <a href="Programming_paradigm" title="Programming paradigm">programming paradigm</a> that models a program as a <a href="Directed_graph" title="Directed graph">directed graph</a> of the data flowing between operations, thus implementing <a href="Dataflow" title="Dataflow">dataflow</a> principles and architecture.<sup id="cite_ref-sigops_1-0" class="reference"><a href="#cite_note-sigops-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Dataflow <a href="Programming_language" title="Programming language">programming languages</a> share some features of <a href="Functional_language" class="mw-redirect" title="Functional language">functional languages</a>, and were generally developed in order to bring some functional concepts to a language more suitable for numeric processing. Some authors use the term <i>datastream</i> instead of <i><a href="Dataflow" title="Dataflow">dataflow</a></i> to avoid confusion with dataflow computing or <a href="Dataflow_architecture" title="Dataflow architecture">dataflow architecture</a>, based on an indeterministic machine paradigm. Dataflow programming was pioneered by <a href="Jack_Dennis" title="Jack Dennis">Jack Dennis</a> and his graduate students at MIT in the 1960s.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Considerations">Considerations</h2></div>
<p>Traditionally, a program is modelled as a series of operations happening in a specific order; this may be referred to as sequential,<sup id="cite_ref-advances_2-0" class="reference"><a href="#cite_note-advances-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page / location: p.3">: p.3 </span></sup>
procedural,<sup id="cite_ref-lucid_3-0" class="reference"><a href="#cite_note-lucid-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
<a href="Control_flow" title="Control flow">control flow</a><sup id="cite_ref-lucid_3-1" class="reference"><a href="#cite_note-lucid-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> (indicating that the program chooses a specific path), or <a href="Imperative_programming" title="Imperative programming">imperative programming</a>. The program focuses on commands, in line with the <a href="John_von_Neumann" title="John von Neumann">von Neumann</a><sup id="cite_ref-advances_2-1" class="reference"><a href="#cite_note-advances-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page / location: p.3">: p.3 </span></sup> vision of sequential programming, where data is normally "at rest".<sup id="cite_ref-lucid_3-2" class="reference"><a href="#cite_note-lucid-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page / location: p.7">: p.7 </span></sup>
</p><p>In contrast, dataflow programming emphasizes the movement of data and models programs as a series of connections. Explicitly defined inputs and outputs connect operations, which function like <a href="Black_box" title="Black box">black boxes</a>.<sup id="cite_ref-lucid_3-3" class="reference"><a href="#cite_note-lucid-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page / location: p.2">: p.2 </span></sup> An operation runs as soon as all of its inputs become valid.<sup id="cite_ref-labview_4-0" class="reference"><a href="#cite_note-labview-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Thus, dataflow languages are inherently parallel and can work well in large, decentralized systems.<sup id="cite_ref-advances_2-2" class="reference"><a href="#cite_note-advances-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page / location: p.3">: p.3 </span></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="State">State</h3></div>
<p>One of the key concepts in computer programming is the idea of <a href="State_(computer_science)" title="State (computer science)">state</a>, essentially a snapshot of various conditions in the system. Most programming languages require a considerable amount of state information, which is generally hidden from the programmer. Often, the computer itself has no idea which piece of information encodes the enduring state. This is a serious problem, as the state information needs to be shared across multiple processors in <a href="Parallel_computing" title="Parallel computing">parallel processing</a> machines. Most languages force the programmer to add extra code to indicate which data and parts of the code are important to the state. This code tends to be both expensive in terms of performance, as well as difficult to read or debug. <a href="Explicit_parallelism" title="Explicit parallelism">Explicit parallelism</a> is one of the main reasons for the poor performance of <a href="Enterprise_Java_Beans" class="mw-redirect" title="Enterprise Java Beans">Enterprise Java Beans</a> when building data-intensive, non-<a href="Online_transaction_processing" title="Online transaction processing">OLTP</a> applications.
</p><p>Where a sequential program can be imagined as a single worker moving between tasks (operations), a dataflow program is more like a series of workers on an <a href="Assembly_line" title="Assembly line">assembly line</a>, each doing a specific task whenever materials are available. Since the operations are only concerned with the availability of data inputs, they have no hidden state to track, and are all "ready" at the same time.
</p>
<div class="mw-heading mw-heading3"><h3 id="Representation">Representation</h3></div>
<p>Dataflow programs are represented in different ways. A traditional program is usually represented as a series of text instructions, which is reasonable for describing a serial system which pipes data between small, single-purpose tools that receive, process, and return. Dataflow programs start with an input, perhaps the <a href="Command_line" class="mw-redirect" title="Command line">command line</a> parameters, and illustrate how that data is used and modified. The flow of data is explicit, often visually illustrated as a line or pipe.
</p><p>In terms of encoding, a dataflow program might be implemented as a <a href="Hash_table" title="Hash table">hash table</a>, with uniquely identified inputs as the keys, used to look up pointers to the instructions. When any operation completes, the program scans down the list of operations until it finds the first operation where all inputs are currently valid, and runs it. When that operation finishes, it will typically output data, thereby making another operation become valid.
</p><p>For parallel operation, only the list needs to be shared; it is the state of the entire program. Thus the task of maintaining state is removed from the programmer and given to the language's <a href="Run-time_system" class="mw-redirect" title="Run-time system">runtime</a>. On machines with a single processor core where an implementation designed for parallel operation would simply introduce overhead, this overhead can be removed completely by using a different runtime.
</p>
<div class="mw-heading mw-heading3"><h3 id="Incremental_updates">Incremental updates</h3></div>
<p>Some recent dataflow libraries such as Differential/Timely Dataflow have used <a href="Incremental_computing" title="Incremental computing">incremental computing</a> for much more efficient data processing.<sup id="cite_ref-sigops_1-1" class="reference"><a href="#cite_note-sigops-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-differential-paper_7-0" class="reference"><a href="#cite_note-differential-paper-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-differential-github_8-0" class="reference"><a href="#cite_note-differential-github-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>A pioneer dataflow language was BLOck DIagram (BLODI), published in 1961 by <a href="John_Larry_Kelly%2C_Jr." class="mw-redirect" title="John Larry Kelly, Jr.">John Larry Kelly, Jr.</a>, Carol Lochbaum and <a href="Victor_A._Vyssotsky" title="Victor A. Vyssotsky">Victor A. Vyssotsky</a> for specifying <a href="Sampled_data_systems" class="mw-redirect" title="Sampled data systems">sampled data systems</a>.<sup id="cite_ref-Kelly1961_9-0" class="reference"><a href="#cite_note-Kelly1961-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> A BLODI specification of functional units (amplifiers, adders, delay lines, etc.) and their interconnections was compiled into a single loop that updated the entire system for one clock tick.
</p><p>In a 1966 Ph.D. thesis, <i>The On-line Graphical Specification of Computer Procedures</i>,<sup id="cite_ref-sutherland1966_10-0" class="reference"><a href="#cite_note-sutherland1966-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> <a href="Bert_Sutherland" title="Bert Sutherland">Bert Sutherland</a> created one of the first graphical dataflow programming frameworks in order to make parallel programming easier. Subsequent dataflow languages were often developed at the large <a href="Supercomputer" title="Supercomputer">supercomputer</a> labs. POGOL, an otherwise conventional data-processing language developed at <a href="NSA" class="mw-redirect" title="NSA">NSA</a>, compiled large-scale applications composed of multiple file-to-file operations, e.g. merge, select, summarize, or transform, into efficient code that eliminated the creation of or writing to intermediate files to the greatest extent possible.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> <a href="SISAL" title="SISAL">SISAL</a>, a popular dataflow language developed at <a href="Lawrence_Livermore_National_Laboratory" title="Lawrence Livermore National Laboratory">Lawrence Livermore National Laboratory</a>, looks like most statement-driven languages, but variables should be <a href="Single_assignment" class="mw-redirect" title="Single assignment">assigned once</a>. This allows the <a href="Compiler" title="Compiler">compiler</a> to easily identify the inputs and outputs. A number of offshoots of SISAL have been developed, including <a href="SAC_programming_language" title="SAC programming language">SAC</a>, <i>Single Assignment C</i>, which tries to remain as close to the popular <a href="C_(programming_language)" title="C (programming language)">C programming language</a> as possible.
</p><p>The United States Navy funded development of signal processing graph notation (SPGN) and ACOS starting in the early 1980s. This is in use on a number of platforms in the field today.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p><p>A more radical concept is <a href="Prograph" title="Prograph">Prograph</a>, in which programs are constructed as graphs onscreen, and variables are replaced entirely with lines linking inputs to outputs. Prograph was originally written on the <a href="Apple_Macintosh" class="mw-redirect" title="Apple Macintosh">Macintosh</a>, which remained single-processor until the introduction of the <a href="DayStar_Digital" title="DayStar Digital">DayStar Genesis MP</a> in 1996.
</p><p>There are many hardware architectures oriented toward the efficient implementation of dataflow programming models. MIT's tagged token dataflow architecture was designed by <a href="Greg_Papadopoulos" title="Greg Papadopoulos">Greg Papadopoulos</a>.
</p><p>Data flow has been proposed as an abstraction for specifying the global behavior of distributed system components: in the <a href="Live_distributed_object" title="Live distributed object">live distributed objects</a> programming model, <a href="Distributed_data_flow" title="Distributed data flow">distributed data flows</a> are used to store and communicate state, and as such, they play the role analogous to variables, fields, and parameters in Java-like programming languages.
</p>
<div class="mw-heading mw-heading2"><h2 id="Languages">Languages</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p>Dataflow programming languages include:
</p>
<ul><li><a href="C%C3%A9u_(programming_language)" title="Céu (programming language)">Céu (programming language)</a></li>
<li><a href="ETAS_Group" class="mw-redirect" title="ETAS Group">ASCET</a></li>
<li><a href="AviSynth" title="AviSynth">AviSynth</a> scripting language, for video processing</li>
<li><a href="BMDFM" class="mw-redirect" title="BMDFM">BMDFM</a> Binary Modular Dataflow Machine</li>
<li><a href="CAL_Actor_Language" title="CAL Actor Language">CAL</a></li>
<li><a href="Cuneiform_(programming_language)" title="Cuneiform (programming language)">Cuneiform</a>, a <a href="Functional_Programming" class="mw-redirect" title="Functional Programming">functional</a> workflow language.</li>
<li><a href="CMS_Pipelines" title="CMS Pipelines">CMS Pipelines</a></li>
<li><a href="Hume_(programming_language)" title="Hume (programming language)">Hume</a></li>
<li><a href="Joule_(programming_language)" title="Joule (programming language)">Joule</a></li>
<li><a href="Keysight_VEE" title="Keysight VEE">Keysight VEE</a></li>
<li><a href="KNIME" title="KNIME">KNIME</a> is a free and open-source data analytics, reporting and integration platform</li>
<li><a href="LabVIEW" title="LabVIEW">LabVIEW</a>, G<sup id="cite_ref-labview_4-1" class="reference"><a href="#cite_note-labview-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Linda_(coordination_language)" title="Linda (coordination language)">Linda</a></li>
<li><a href="Lucid_(programming_language)" title="Lucid (programming language)">Lucid</a><sup id="cite_ref-lucid_3-4" class="reference"><a href="#cite_note-lucid-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Lustre_(programming_language)" title="Lustre (programming language)">Lustre</a></li>
<li><a href="Max/MSP" class="mw-redirect" title="Max/MSP">Max/MSP</a></li>
<li><a href="Microsoft_Visual_Programming_Language" title="Microsoft Visual Programming Language">Microsoft Visual Programming Language</a> - A component of <a href="Microsoft_Robotics_Studio" class="mw-redirect" title="Microsoft Robotics Studio">Microsoft Robotics Studio</a> designed for <a href="Robotics" title="Robotics">robotics</a> programming</li>
<li><a href="Nextflow" title="Nextflow">Nextflow</a>: a workflow language</li>
<li><a href="Orange_(software)" title="Orange (software)">Orange</a> - An open-source, visual programming tool for <a href="Data_mining" title="Data mining">data mining</a>, statistical <a href="Data_analysis" title="Data analysis">data analysis</a>, and <a href="Machine_learning" title="Machine learning">machine learning</a>.</li>
<li><a href="Oz_(programming_language)" title="Oz (programming language)">Oz</a> now also distributed since 1.4.0</li>
<li><a href="Pipeline_Pilot" title="Pipeline Pilot">Pipeline Pilot</a></li>
<li><a href="Prograph" title="Prograph">Prograph</a></li>
<li><a href="Pure_Data" title="Pure Data">Pure Data</a></li>
<li><a href="Quartz_Composer" title="Quartz Composer">Quartz Composer</a> - Designed by <a href="Apple_Inc." title="Apple Inc.">Apple</a>; used for graphic animations and effects</li>
<li><a href="SAC_programming_language" title="SAC programming language">SAC</a> Single assignment C</li>
<li><a href="SIGNAL_programming_language" class="mw-redirect" title="SIGNAL programming language">SIGNAL</a> (a dataflow-oriented synchronous language enabling multi-clock specifications)</li>
<li><a href="Simulink" title="Simulink">Simulink</a></li>
<li><a href="SISAL" title="SISAL">SISAL</a></li>
<li><a href="SystemVerilog" title="SystemVerilog">SystemVerilog</a> - A hardware description language</li>
<li><a href="Verilog" title="Verilog">Verilog</a> - A hardware description language absorbed into the SystemVerilog standard in 2009</li>
<li><a href="VisSim" title="VisSim">VisSim</a> - A block diagram language for simulation of dynamic systems and automatic firmware generation</li>
<li><a href="VHDL" title="VHDL">VHDL</a> - A hardware description language</li>
<li>Wapice IOT-TICKET implements an unnamed visual dataflow programming language for <a href="Internet_of_things" title="Internet of things">IoT</a> data analysis and reporting.</li>
<li><a href="XEE_(Starlight)" class="mw-redirect" title="XEE (Starlight)">XEE (Starlight)</a> XML engineering environment</li>
<li><a href="XProc" title="XProc">XProc</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Libraries">Libraries</h2></div>
<ul><li><a href="Apache_Beam" title="Apache Beam">Apache Beam</a>: Java/Scala SDK that unifies streaming (and batch) processing with several execution engines supported (Apache Spark, Apache Flink, Google Dataflow etc.)</li>
<li><a href="Apache_Flink" title="Apache Flink">Apache Flink</a>: Java/Scala library that allows streaming (and batch) computations to be run atop a distributed Hadoop (or other) cluster</li>
<li><a href="Apache_Spark" title="Apache Spark">Apache Spark</a></li>
<li><a href="SystemC" title="SystemC">SystemC</a>: Library for C++, mainly aimed at hardware design.</li>
<li><a href="TensorFlow" title="TensorFlow">TensorFlow</a>: A machine-learning library based on dataflow programming.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Actor_model" title="Actor model">Actor model</a></li>
<li><a href="Data-driven_programming" title="Data-driven programming">Data-driven programming</a></li>
<li><a href="Digital_signal_processing" title="Digital signal processing">Digital signal processing</a></li>
<li><a href="Event-driven_programming" title="Event-driven programming">Event-driven programming</a></li>
<li><a href="Flow-based_programming" title="Flow-based programming">Flow-based programming</a></li>
<li><a href="Functional_reactive_programming" title="Functional reactive programming">Functional reactive programming</a></li>
<li><a href="Glossary_of_reconfigurable_computing" title="Glossary of reconfigurable computing">Glossary of reconfigurable computing</a></li>
<li><a href="High-performance_reconfigurable_computing" class="mw-redirect" title="High-performance reconfigurable computing">High-performance reconfigurable computing</a></li>
<li><a href="Incremental_computing" title="Incremental computing">Incremental computing</a></li>
<li><a href="Parallel_programming_model" title="Parallel programming model">Parallel programming model</a></li>
<li><a href="Partitioned_global_address_space" title="Partitioned global address space">Partitioned global address space</a></li>
<li><a href="Pipeline_(Unix)" title="Pipeline (Unix)">Pipeline (Unix)</a></li>
<li><a href="Quantum_circuit" title="Quantum circuit">Quantum circuit</a></li>
<li><a href="Signal_programming" class="mw-redirect" title="Signal programming">Signal programming</a></li>
<li><a href="Stream_processing" title="Stream processing">Stream processing</a></li>
<li><a href="Yahoo_Pipes" title="Yahoo Pipes">Yahoo Pipes</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-sigops-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-sigops_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-sigops_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFSchwarzkopf2020" class="citation web cs1">Schwarzkopf, Malte (7 March 2020). <a rel="nofollow" class="external text" href="https://www.sigops.org/2020/the-remarkable-utility-of-dataflow-computing/">"The Remarkable Utility of Dataflow Computing"</a>. <i>ACM SIGOPS</i><span class="reference-accessdate">. Retrieved <span class="nowrap">31 July</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-advances-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-advances_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-advances_2-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-advances_2-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFJohnstonJ.R._Paul_HannaRichard_J._Millar2004" class="citation journal cs1">Johnston, Wesley M.; J.R. Paul Hanna; Richard J. Millar (March 2004). <a rel="nofollow" class="external text" href="http://www.cs.ucf.edu/~dcm/Teaching/COT4810-Spring2011/Literature/DataFlowProgrammingLanguages.pdf">"Advances in Dataflow Programming Languages"</a> <span class="cs1-format">(PDF)</span>. <i>ACM Computing Surveys</i>. <b>36</b>: <span class="nowrap">1–</span>34. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F1013208.1013209">10.1145/1013208.1013209</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:5257722">5257722</a><span class="reference-accessdate">. Retrieved <span class="nowrap">15 August</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-lucid-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-lucid_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-lucid_3-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-lucid_3-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-lucid_3-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-lucid_3-4"><sup><i><b>e</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFWadgeEdward_A._Ashcroft1985" class="citation book cs1">Wadge, William W.; Edward A. Ashcroft (1985). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/luciddataflowpro00wadg_0"><i>Lucid, the Dataflow Programming Language</i></a></span> (illustrated ed.). Academia Press. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9780127296500</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">15 August</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-labview-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-labview_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-labview_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.ni.com/gettingstarted/labviewbasics/dataflow.htm">"Dataflow Programming Basics"</a>. <i>Getting Started with NI Products</i>. National Instruments Corporation<span class="reference-accessdate">. Retrieved <span class="nowrap">15 August</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFHarter" class="citation web cs1">Harter, Richard. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20151208165213/http://richardhartersworld.com/cri/2009/dataflow1.html">"Data Flow languages and programming - Part I"</a>. <i>Richard Harter's World</i>. Archived from <a rel="nofollow" class="external text" href="http://richardhartersworld.com/cri/2009/dataflow1.html">the original</a> on 8 December 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">15 August</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.ni.com/white-paper/6098/en/">"Why Dataflow Programming Languages are Ideal for Programming Parallel Hardware"</a>. <i>Multicore Programming Fundamentals Whitepaper Series</i>. National Instruments Corporation<span class="reference-accessdate">. Retrieved <span class="nowrap">15 August</span> 2013</span>.</cite></span>
</li>
<li id="cite_note-differential-paper-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-differential-paper_7-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMcSherryMurrayIsaacsIsard2013" class="citation web cs1">McSherry, Frank; Murray, Derek; Isaacs, Rebecca; Isard, Michael (5 January 2013). <a rel="nofollow" class="external text" href="https://www.microsoft.com/en-us/research/publication/differential-dataflow/">"Differential dataflow"</a>. <i><a href="Microsoft" title="Microsoft">Microsoft</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">31 July</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-differential-github-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-differential-github_8-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/TimelyDataflow/differential-dataflow">"Differential Dataflow"</a>. Timely Dataflow. 30 July 2022<span class="reference-accessdate">. Retrieved <span class="nowrap">31 July</span> 2022</span>.</cite></span>
</li>
<li id="cite_note-Kelly1961-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-Kelly1961_9-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFJohn_L._Kelly_Jr.Carol_LochbaumV._A._Vyssotsky1961" class="citation journal cs1">John L. Kelly Jr.; Carol Lochbaum; V. A. Vyssotsky (1961). "A block diagram compiler". <i>Bell System Tech. J</i>. <b>40</b> (3): <span class="nowrap">669–</span>678. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2Fj.1538-7305.1961.tb03236.x">10.1002/j.1538-7305.1961.tb03236.x</a>.</cite></span>
</li>
<li id="cite_note-sutherland1966-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-sutherland1966_10-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFSutherland1966" class="citation thesis cs1"><a href="Bert_Sutherland" title="Bert Sutherland">Sutherland, William Robert</a> (January 1966). <a rel="nofollow" class="external text" href="https://dspace.mit.edu/handle/1721.1/13474"><i>The on-line graphical specification of computer procedures</i></a> (PhD thesis). <a href="Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology">MIT</a>. <a href="Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/1721.1%2F13474">1721.1/13474</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2022-08-25</span></span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFGloria_Lambert1973" class="citation conference cs1">Gloria Lambert (1973). "Large scale file processing: POGOL". <i>POPL '73: Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages</i>. <a href="Association_for_Computing_Machinery" title="Association for Computing Machinery">ACM</a>. pp. <span class="nowrap">226–</span>234.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text">Underwater Acoustic Data Processing, Y.T. Chan</span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20131017033905/http://deepfriedcode.com/">Book: Dataflow and Reactive Programming Systems</a></li>
<li><a rel="nofollow" class="external text" href="http://www.codeproject.com/Articles/107121/Basics-of-Dataflow-Programming-in-F-and-C">Basics of Dataflow Programming in F# and C#</a></li>
<li><a rel="nofollow" class="external text" href="http://paginas.fe.up.pt/~prodei/dsie12/papers/paper_17.pdf">Dataflow Programming - Concept, Languages and Applications</a></li>
<li><a rel="nofollow" class="external text" href="http://ptolemy.eecs.berkeley.edu/publications/papers/87/staticscheduling/">Static Scheduling of Synchronous Data Flow Programs for Digital Signal Processing</a></li>
<li><a rel="nofollow" class="external text" href="http://drdobbs.com/database/231400148">Handling huge loads without adding complexity</a> The basic concepts of dataflow programming, Dr. Dobb's, Sept. 2011</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Programming_paradigms_(Comparison_by_language)368" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Programming_paradigms_(Comparison_by_language)368" style="font-size:114%;margin:0 4em"><a href="Programming_paradigm" title="Programming paradigm">Programming paradigms</a> (<a href="Comparison_of_multi-paradigm_programming_languages" title="Comparison of multi-paradigm programming languages">Comparison by language</a>)</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Imperative_programming" title="Imperative programming">Imperative</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Structured_programming" title="Structured programming">Structured</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Jackson_structured_programming" title="Jackson structured programming">Jackson structures</a></li>
<li><a href="Block_(programming)" title="Block (programming)">Block-structured</a></li>
<li><a href="Modular_programming" title="Modular programming">Modular</a></li>
<li><a href="Non-structured_programming" title="Non-structured programming">Non-structured</a></li>
<li><a href="Procedural_programming" title="Procedural programming">Procedural</a></li>
<li><a href="Programming_in_the_large_and_programming_in_the_small" title="Programming in the large and programming in the small">Programming in the large and in the small</a></li>
<li><a href="Design_by_contract" title="Design by contract">Design by contract</a></li>
<li><a href="Invariant-based_programming" title="Invariant-based programming">Invariant-based</a></li>
<li><a href="Nested_function" title="Nested function">Nested function</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Object-oriented_programming" title="Object-oriented programming">Object-oriented</a><br>(<a href="Comparison_of_programming_languages_(object-oriented_programming)" title="Comparison of programming languages (object-oriented programming)">comparison</a>, <a href="List_of_object-oriented_programming_languages" title="List of object-oriented programming languages">list</a>)</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Class-based_programming" title="Class-based programming">Class-based</a>, <a href="Prototype-based_programming" title="Prototype-based programming">Prototype-based</a>, <a href="Object-based_language" title="Object-based language">Object-based</a></li>
<li><a href="Agent-oriented_programming" title="Agent-oriented programming">Agent</a></li>
<li><a href="Immutable_object" title="Immutable object">Immutable object</a></li>
<li><a href="Persistent_programming_language" title="Persistent programming language">Persistent</a></li>
<li><a href="Uniform_function_call_syntax" title="Uniform function call syntax">Uniform function call syntax</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Declarative_programming" title="Declarative programming">Declarative</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Functional_programming" title="Functional programming">Functional</a><br>(<a href="Comparison_of_functional_programming_languages" title="Comparison of functional programming languages">comparison</a>)</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Recursion_(computer_science)" title="Recursion (computer science)">Recursive</a></li>
<li><a href="Anonymous_function" title="Anonymous function">Anonymous function</a> (<a href="Partial_application" title="Partial application">Partial application</a>)</li>
<li><a href="Higher-order_programming" title="Higher-order programming">Higher-order</a></li>
<li><a href="Purely_functional_programming" title="Purely functional programming">Purely functional</a></li>
<li><a href="Total_functional_programming" title="Total functional programming">Total</a></li>
<li><a href="Strict_programming_language" title="Strict programming language">Strict</a></li>
<li><a href="Generalized_algebraic_data_type" title="Generalized algebraic data type">GADTs</a></li>
<li><a href="Dependent_type" title="Dependent type">Dependent types</a></li>
<li><a href="Functional_logic_programming" title="Functional logic programming">Functional logic</a></li>
<li><a href="Tacit_programming" title="Tacit programming">Point-free style</a></li>
<li><a href="Expression-oriented_programming_language" title="Expression-oriented programming language">Expression-oriented</a></li>
<li><a href="Applicative_programming_language" title="Applicative programming language">Applicative</a>, <a href="Concatenative_programming_language" title="Concatenative programming language">Concatenative</a></li>
<li><a href="Function-level_programming" title="Function-level programming">Function-level</a>, <a href="Value-level_programming" title="Value-level programming">Value-level</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Flow-based_programming" title="Flow-based programming">Flow-based</a></li>
<li><a href="Reactive_programming" title="Reactive programming">Reactive</a> (<a href="Functional_reactive_programming" title="Functional reactive programming">Functional reactive</a>)</li>
<li><a href="Signal_programming" class="mw-redirect" title="Signal programming">Signals</a></li>
<li><a href="Stream_processing" title="Stream processing">Streams</a></li>
<li><a href="Synchronous_programming_language" title="Synchronous programming language">Synchronous</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Logic_programming" title="Logic programming">Logic</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Abductive_logic_programming" title="Abductive logic programming">Abductive logic</a></li>
<li><a href="Answer_set_programming" title="Answer set programming">Answer set</a></li>
<li><a href="Constraint_programming" title="Constraint programming">Constraint</a> (<a href="Constraint_logic_programming" title="Constraint logic programming">Constraint logic</a>)</li>
<li><a href="Inductive_logic_programming" title="Inductive logic programming">Inductive logic</a></li>
<li><a href="Nondeterministic_programming" title="Nondeterministic programming">Nondeterministic</a></li>
<li><a href="Ontology_language" title="Ontology language">Ontology</a></li>
<li><a href="Probabilistic_logic_programming" title="Probabilistic logic programming">Probabilistic logic</a></li>
<li><a href="Query_language" title="Query language">Query</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Domain-specific_language" title="Domain-specific language">DSL</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Algebraic_modeling_language" title="Algebraic modeling language">Algebraic modeling</a></li>
<li><a href="Array_programming" title="Array programming">Array</a></li>
<li><a href="Automata-based_programming" title="Automata-based programming">Automata-based</a> (<a href="Action_language" title="Action language">Action</a>)</li>
<li><a href="Command_language" title="Command language">Command</a> (<a href="Spacecraft_command_language" title="Spacecraft command language">Spacecraft</a>)</li>
<li><a href="Differentiable_programming" title="Differentiable programming">Differentiable</a></li>
<li><a href="End-user_development" title="End-user development">End-user</a></li>
<li><a href="Grammar-oriented_programming" title="Grammar-oriented programming">Grammar-oriented</a></li>
<li><a href="Interface_description_language" title="Interface description language">Interface description</a></li>
<li><a href="Language-oriented_programming" title="Language-oriented programming">Language-oriented</a></li>
<li><a href="List_comprehension" title="List comprehension">List comprehension</a></li>
<li><a href="Low-code_development_platform" title="Low-code development platform">Low-code</a></li>
<li><a href="Modeling_language" title="Modeling language">Modeling</a></li>
<li><a href="Natural-language_programming" class="mw-redirect" title="Natural-language programming">Natural language</a></li>
<li><a href="Non-English-based_programming_languages" title="Non-English-based programming languages">Non-English-based</a></li>
<li><a href="Page_description_language" title="Page description language">Page description</a></li>
<li><a href="Pipeline_(software)" title="Pipeline (software)">Pipes</a> and <a href="Filter_(software)" title="Filter (software)">filters</a></li>
<li><a href="Probabilistic_programming" title="Probabilistic programming">Probabilistic</a></li>
<li><a href="Quantum_programming" title="Quantum programming">Quantum</a></li>
<li><a href="Scientific_programming_language" title="Scientific programming language">Scientific</a></li>
<li><a href="Scripting_language" title="Scripting language">Scripting</a></li>
<li><a href="Set_theoretic_programming" title="Set theoretic programming">Set-theoretic</a></li>
<li><a href="Simulation_language" title="Simulation language">Simulation</a></li>
<li><a href="Stack-oriented_programming" title="Stack-oriented programming">Stack-based</a></li>
<li><a href="System_programming_language" title="System programming language">System</a></li>
<li><a href="Tactile_programming_language" title="Tactile programming language">Tactile</a></li>
<li><a href="Template_processor" title="Template processor">Templating</a></li>
<li><a href="Transformation_language" title="Transformation language">Transformation</a> (<a href="Graph_rewriting" title="Graph rewriting">Graph rewriting</a>, <a href="Production_system_(computer_science)" title="Production system (computer science)">Production</a>, <a href="Pattern_matching" title="Pattern matching">Pattern</a>)</li>
<li><a href="Visual_programming_language" title="Visual programming language">Visual</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Concurrent_computing" title="Concurrent computing">Concurrent</a>,<br><a href="Distributed_computing" title="Distributed computing">distributed</a>,<br><a href="Parallel_computing" title="Parallel computing">parallel</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Actor_model" title="Actor model">Actor-based</a></li>
<li><a href="Automatic_mutual_exclusion" title="Automatic mutual exclusion">Automatic mutual exclusion</a></li>
<li><a href="Choreographic_programming" title="Choreographic programming">Choreographic programming</a></li>
<li><a href="Concurrent_logic_programming" title="Concurrent logic programming">Concurrent logic</a> (<a href="Concurrent_constraint_logic_programming" title="Concurrent constraint logic programming">Concurrent constraint logic</a>)</li>
<li><a href="Concurrent_object-oriented_programming" title="Concurrent object-oriented programming">Concurrent OO</a></li>
<li><a href="Macroprogramming" title="Macroprogramming">Macroprogramming</a></li>
<li><a href="Multitier_programming" title="Multitier programming">Multitier programming</a></li>
<li><a href="Organic_computing" title="Organic computing">Organic computing</a></li>
<li><a href="Parallel_programming_model" title="Parallel programming model">Parallel programming models</a></li>
<li><a href="Partitioned_global_address_space" title="Partitioned global address space">Partitioned global address space</a></li>
<li><a href="Process-oriented_programming" title="Process-oriented programming">Process-oriented</a></li>
<li><a href="Relativistic_programming" title="Relativistic programming">Relativistic programming</a></li>
<li><a href="Service-oriented_programming" title="Service-oriented programming">Service-oriented</a></li>
<li><a href="Structured_concurrency" title="Structured concurrency">Structured concurrency</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Metaprogramming" title="Metaprogramming">Metaprogramming</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Attribute-oriented_programming" title="Attribute-oriented programming">Attribute-oriented</a></li>
<li><a href="Automatic_programming" title="Automatic programming">Automatic</a> (<a href="Inductive_programming" title="Inductive programming">Inductive</a>)</li>
<li><a href="Dynamic_programming_language" title="Dynamic programming language">Dynamic</a></li>
<li><a href="Extensible_programming" title="Extensible programming">Extensible</a></li>
<li><a href="Generic_programming" title="Generic programming">Generic</a></li>
<li><a href="Homoiconicity" title="Homoiconicity">Homoiconicity</a></li>
<li><a href="Interactive_programming" title="Interactive programming">Interactive</a></li>
<li><a href="Macro_(computer_science)" title="Macro (computer science)">Macro</a> (<a href="Hygienic_macro" title="Hygienic macro">Hygienic</a>)</li>
<li><a href="Metalinguistic_abstraction" title="Metalinguistic abstraction">Metalinguistic abstraction</a></li>
<li><a href="Multi-stage_programming" title="Multi-stage programming">Multi-stage</a></li>
<li><a href="Program_synthesis" title="Program synthesis">Program synthesis</a> (<a href="Bayesian_program_synthesis" title="Bayesian program synthesis">Bayesian</a>, <a href="Inferential_programming" title="Inferential programming">Inferential</a>, <a href="Programming_by_demonstration" title="Programming by demonstration">by demonstration</a>, <a href="Programming_by_example" title="Programming by example">by example</a>)</li>
<li><a href="Reflective_programming" title="Reflective programming">Reflective</a></li>
<li><a href="Self-modifying_code" title="Self-modifying code">Self-modifying code</a></li>
<li><a href="Symbolic_programming" title="Symbolic programming">Symbolic</a></li>
<li><a href="Template_metaprogramming" title="Template metaprogramming">Template</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Separation_of_concerns" title="Separation of concerns">Separation<br>of concerns</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Aspect-oriented_programming" title="Aspect-oriented programming">Aspects</a></li>
<li><a href="Component-based_software_engineering" title="Component-based software engineering">Components</a></li>
<li><a href="Data-driven_programming" title="Data-driven programming">Data-driven</a></li>
<li><a href="Data-oriented_design" title="Data-oriented design">Data-oriented</a></li>
<li><a href="Event-driven_programming" title="Event-driven programming">Event-driven</a></li>
<li><a href="Feature-oriented_programming" title="Feature-oriented programming">Features</a></li>
<li><a href="Literate_programming" title="Literate programming">Literate</a></li>
<li><a href="Role-oriented_programming" title="Role-oriented programming">Roles</a></li>
<li><a href="Subject-oriented_programming" title="Subject-oriented programming">Subjects</a></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Types_of_programming_languages107" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Types_of_programming_languages107" style="font-size:114%;margin:0 4em"><a href="Programming_paradigm" title="Programming paradigm">Types of programming languages</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Level</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Machine_code" title="Machine code">Machine</a></li>
<li><a href="Assembly_language" title="Assembly language">Assembly</a></li>
<li><a href="Compiled_language" title="Compiled language">Compiled</a></li>
<li><a href="Interpreted_language" class="mw-redirect" title="Interpreted language">Interpreted</a></li></ul>
<ul><li><a href="Low-level_programming_language" title="Low-level programming language">Low-level</a></li>
<li><a href="High-level_programming_language" title="High-level programming language">High-level</a></li>
<li><a href="Very_high-level_programming_language" title="Very high-level programming language">Very high-level</a></li>
<li><a href="Esoteric_programming_language" title="Esoteric programming language">Esoteric</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Programming_language_generations" title="Programming language generations">Generation</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="First-generation_programming_language" title="First-generation programming language">First</a></li>
<li><a href="Second-generation_programming_language" title="Second-generation programming language">Second</a></li>
<li><a href="Third-generation_programming_language" title="Third-generation programming language">Third</a></li>
<li><a href="Fourth-generation_programming_language" title="Fourth-generation programming language">Fourth</a></li>
<li><a href="Fifth-generation_programming_language" title="Fifth-generation programming language">Fifth</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-04-21" href="https://en.wikipedia.org/wiki/?title=Dataflow_programming&oldid=1286656491">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>